package com.minotauro.i18n.demo;

import java.util.Calendar;
import java.util.Locale;

import org.apache.commons.lang.StringUtils;

import com.minotauro.i18n.util.ReflectionI18N;

public class Test {

	public static void run() throws Exception {

//		System.err.println(_PropFooBean.NAME);
//		System.err.println(_PropFooBean.DESC);
//		System.err.println(_PropFooBean.EMPTY);
//		System.err.println(_PropFooBean.CAMEL_CASE);

		// ----------------------------------------
		// should not have been generated
		// System.err.println(_PropFooBean.NO_GETTER);
		// System.err.println(_PropFooBean.NO_SETTER);
		// ----------------------------------------

		System.err.println("****************************************");

		System.err.println(_I18NI18NDemo.hello("1", "2"));
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "hello", new Object[]{"1", "2"}));

		System.err.println(_I18NI18NDemo.world("1"));
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "world", new Object[]{"1"}));

		System.err.println(_I18NI18NDemo.xxx());
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "xxx"));

		System.err.println(_I18NI18NDemo.firstName());
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "firstName"));

		System.err.println(_I18NI18NDemo.lastName());
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "lastName"));

		System.err.println(_I18NI18NDemo.date());
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "date"));

		System.err.println(_I18NI18NDemo.bankBalance());
		System.err.println(ReflectionI18N.i18n( //
		    _I18NI18NDemo.class.getName(), "bankBalance"));

		System.err.println("****************************************");

		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(10));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(100));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(1000));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(10000));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(100000));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(1000000));

		System.err.println("****************************************");

		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(10.11111));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(100.11111));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(1000.11111));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(10000.11111));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(100000.11111));
		System.err.println(_NumbNumbDemo.formatDefault2NumberFormat(1000000.11111));

		System.err.println("****************************************");

		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(10));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(100));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(1000));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(10000));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(100000));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(1000000));

		System.err.println("****************************************");

		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(10.11111));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(100.11111));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(1000.11111));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(10000.11111));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(100000.11111));
		System.err.println(_NumbNumbDemo.formatDefault4NumberFormat(1000000.11111));

		System.err.println("****************************************");

		// ----------------------------------------
		// XXX: Shoud test parsing better
		// ----------------------------------------

		System.err.println(_NumbNumbDemo.parseDefault4NumberFormat("1,000,000.10"));

		System.err.println("****************************************");

		Calendar calendar = Calendar.getInstance();

		System.err.println(_DateDateDemo.formatDateOnly(calendar));
		System.err.println(_DateDateDemo.formatDateLong(calendar));
		System.err.println(_DateDateDemo.formatDateTime(calendar));
		System.err.println(_DateDateDemo.formatTimeOnly(calendar));

		System.err.println(_DateDateDemo.formatMonthYear(calendar));
		System.err.println(_DateDateDemo.formatMonthOnly(calendar));

		System.err.println("****************************************");

		// ----------------------------------------
		// XXX: Shoud test parsing better
		// ----------------------------------------

		String strDate;

		if (StringUtils.equals("es", Locale.getDefault().getLanguage())) {
			strDate = "21-10-2007";
		} else {
			strDate = "21/10/2007";
		}

		Calendar calDate = _DateDateDemo.parseDateOnly(strDate);
		System.err.println(_DateDateDemo.formatDateOnly(calDate) + " -> " + strDate);
	}

	// --------------------------------------------------------------------------------

	public static void main(String[] args) throws Exception {
		System.err.println("---------------------------------------- es_VE");
		Locale.setDefault(new Locale("es", "VE"));
		run();

		System.err.println("---------------------------------------- en_US");
		Locale.setDefault(new Locale("en", "US"));
		run();

		System.err.println("---------------------------------------- en_US");
		Locale.setDefault(new Locale("fr", "FR"));
		run();
	}
}
